package com.wangxiang.crawler.entity;

import org.apache.http.HttpStatus;

import java.util.HashMap;

/**
 * 手写统一返回值类型，继承hashMap
 */
public class R extends HashMap<String , Object> {
    /**
     *事项序列类必须填写private static final long serialVersionUID = 1L;
     */
    private static final long serialVersionUID = 1L;

    /**
     * 定义R的无参构造（初始构造）
     */
    public R(){
        //定义编码
        put("code",0);
        //定义提示消息
        put("msg","this is msg");
    }
    /**
     * 统一返回错误
     * 使用方法的重载
     * 定义返回错误，无参数，使用http枚举错误码
     */
    public static R error(){
        return error(HttpStatus.SC_INTERNAL_SERVER_ERROR, "500错误，请联系管理员");
    }

    /**
     *
     * 带有提示消息的返回，msg参数
     */
    public static R error(String msg){
        return error(HttpStatus.SC_INTERNAL_SERVER_ERROR, msg);
    }

    /**
     * 有编码，有执行消息的error,参数 code ,msg
     */
    public static R error(int code,String msg){
        R r = new R();
        r.put("code", code);
        r.put("msg", msg);
        return r;
    }
    /**
     * 统一返回成功
     * 使用方法的重载
     * 返回提示消息 msg
     */
    public static R ok(String msg){
        R r = new R();
        r.put("msg", msg);
        return r;
    }

    /**
     * 返回map
     */
    public static R ok(HashMap<String , Object> map){
        R r = new R();
        r.put("map",map);
        return r;
    }
    /**
     * 无参返回
     */
    public static R ok(){
        R r = new R();
        return r;
    }
    /**
     * 自定义put,重写put
     * @Override是伪代码,表示重写(当然不写也可以)
     */
    @Override
    public R put(String key, Object value){
        super.put(key, value);
        return this;
    }




}
